package com.company.libraryservice.mapper;

import com.company.libraryservice.model.Book;
import java.util.List;
import org.apache.ibatis.annotations.*;

/**
 * 图书数据访问接口
 *
 * @author RoyMa
 * @date 2025-08-12
 */
@Mapper
public interface BookMapper {

  /**
   * 查询所有未被删除的图书列表
   *
   * @return 图书列表
   */
  @Select("SELECT * FROM book WHERE is_deleted = 0")
  List<Book> listBooks();

  /**
   * 新增一条图书记录
   *
   * @param book 图书实体
   * @return 成功插入的行数
   */
  @Insert(
      "INSERT INTO book(title,author,stock,gmt_create,gmt_modified) "
          + "VALUES(#{title},#{author},#{stock},NOW(),NOW())")
  @Options(useGeneratedKeys = true, keyProperty = "id")
  int insert(Book book);

  /**
   * 借书：将指定图书库存减 1
   *
   * @param id 图书主键
   * @return 成功更新的行数
   */
  @Update("UPDATE book SET stock = stock - 1 WHERE id = #{id} AND stock > 0")
  int borrow(@Param("id") Long id);

  /**
   * 还书：将指定图书库存加 1
   *
   * @param id 图书主键
   * @return 成功更新的行数
   */
  @Update("UPDATE book SET stock = stock + 1 WHERE id = #{id}")
  int ret(@Param("id") Long id);
}
